彈珠射擊遊戲Demo-SmashSquash
彈珠射擊遊戲Demo-SmashSquash
前言
類似怪物彈珠的射擊遊戲製作,是學習類型的專案。
期間對C# OOP概念的進一步利用深入了解
著重於繼承的方面
嘗試使用event來開發遊戲
也實作了多個子系統,後續會一一介紹
DEMO
遊戲內容介紹
封面
載入介面

- LoadingSystem,處理載入進度條
- 包括異步加載場景的程式
 - 負責處理遊戲中所有的場景載入
 
 - RadioSystem,處理遊戲中的提示資訊
 
故事、教學介面


- StorySystem,故事主系統
- Flower plugin
 - 用於載入Flower的設定
 - 依靠註冊各類事件,來處理遊戲中相關文本的撥放
 - 能夠靠著編寫故事腳本,來加快劇情對話的開發
 
 
大廳

- PlayerAccountSystem
- 處理玩家資料
 
 - PlayerInfo
- 負責玩家資料的UGUI部分
 
 
背包介面

- PackageSystem,用於處理玩家背包資訊
- 透過長按單位,可以進入單位資訊介面
 - 且能夠設置出戰隊伍
 
 - PackagePage,同上,但負責UGUI部分
 
單位介面

- UnitInfoSystem,顯示單位資訊
 

- 能夠進行單位的強化
 
召喚介面

- SummonPool
- 透過list還存有的單位,進行抽卡
 
 
音量設置介面
關卡介面

- StageSystem,處理關卡的新增以及載入
- 關卡資訊是一個靜態類別,方便製作以及添加到關卡列表中
 
 
戰鬥介面

- 玩家的單位是綠框,敵人單位是紅框
 - 包括小地圖系統、戰鬥設置系統、單位系統等等數個系統,放置在BattleScene資料夾底下
 - 技能系統
 - 射擊UI輔助
 - 受傷效果
 - 設定
 
各類系統
LoadingSystem
處理載入進度條
- 包括異步加載場景的程式
 - 負責處理遊戲中所有的場景載入
 
/// <summary>
    /// 異步加載場景
    /// </summary>
    /// <param name="sceneName">場景名稱</param>
    /// <returns></returns>
    IEnumerator LoadLevel(string sceneName)
    {
        AsyncOperation operation = SceneManager.LoadSceneAsync(sceneName);  //預加載指定場景
        while(operation.isDone == false)
        {
            loadingBar.value = operation.progress;
            loadingText.text = "Loading......" + operation.progress * 100 + "%";
            yield return null;
        }
        LoadingCanvas.SetActive(false);
    }RadioSystem
用於廣播提示資訊以及腳色資訊
以訊息類別來處理來源不同的訊息廣播
讓呼叫廣播系統的所有程式,只需要傳遞string參數即可
/// <summary>
/// 訊息類型
/// </summary>
public enum RadioType
{
    System,
    UnitSkill
}StorySystem
故事主系統
- Flower plugin
 - 用於載入Flower的設定
 - 依靠註冊各類事件,來處理遊戲中相關文本的撥放
 - 能夠靠著編寫故事腳本,來加快劇情對話的開發
 
[show]
[MusicSystem,Stop]
[audio,voidBgm,OpeningScene/openingVoid,true,0,audioTransit_1_1000]
[image,system,OpeningScene/systemEye,0,100,0,spFadeIn_1000]
機械式的聲音:甦醒了嗎? 契約者編號-R7549TY129。[w]
機械式的聲音:根據立維斯引渡條款、波特蘭帝國領土保衛守則、人型生命體援助基金會-第12條約定、......[w]
機械式的聲音:......、七顆星魔法議章之規範,湛金議程委員會下轄之褪色樂園已擁有契約者的完全解釋所有權。[w]
機械式的聲音:已發配智能助手R7型......[w]
機械式的聲音:......[w]
機械式的聲音:傳送完畢,後續引導將轉交由智能助手R7型進行[w]
[remove,system,spFadeOut_1000]
[remove,voidBgm,audioTransit_0_1000]
[MusicSystem,Start]
[hide]
[ReadedStory,openingIntro]
[LoadPage,MainScene]PackageSystem && PackagePage
處理在背包介面所有的操作
- 遊戲中的單位會被註冊在圖鑑中,這個專案的單位是由一個MonoBehavior來做紀錄
- 故需要讓該物件一值存在於場景中
 - 後續開發中,物件被註冊在靜態的Dictionary中
 - 在遊戲開始後,將放在MonoBehavior的Prefabs載入
 - 更加方便
 
 
彈珠射擊遊戲Demo-SmashSquash
      https://z-hwa.github.io/webHome/[object Object]/Game-develope/彈珠射擊遊戲Demo-SmashSquash/
    




